/**
    * 过滤器文件_过滤方法说明:
	* setThousandNum 千位格式化 
    * yearCur  当前年份
    * monthCur   当前月份
    * dateCur   当前日期
    * dateFormat  日期格式化
	* getDate  获取日期的起始和结束值
    * getDates  根据当前年份和月份，获取对应的天数
    * emptyTip 数据为空的填充内容
	* objToPathStr  对象拼接成字符串传为url
 */

import Vue from "vue";

/**
 * 生成[n,m]的随机整数
 * @param minNum  最小值
 * @param maxNum  最大值
 * 使用 this.$options.filters.randomNum(minNum,maxNum);
 */
Vue.filter('randomNum', (minNum, maxNum) => {
    switch (arguments.length) {
        case 2:
            return parseInt(Math.random() * minNum + 1, 10);
            break;
        case 3:
            return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
            break;
        default:
            return 0;
            break;
    }
})


/**
 * setThousandNum 千位格式化 
 * @param val
 * 使用 this.$options.filters.setThousandNum(val);
 */
Vue.filter('setThousandNum', (value) => {
    if (value === null || isNaN(value)) {
        return "-"; //无效数字
    }
    return setThousandNum(value);
})

/**
 * 当前年份
 * 使用： this.$options.filters.yearCur()
 */
Vue.filter('yearCur', () => {
    return (new Date()).getFullYear();
});

/**
 * 当前月份
 * 使用： this.$options.filters.monthCur()
 */
Vue.filter('monthCur', () => {
    return (new Date()).getMonth() + 1;
});

/**
 * 当前日期
 * 使用： this.$options.filters.dateCur()
 */
Vue.filter('dateCur', () => {
    return (new Date()).getDate();
});

/**
 * 日期格式化
 * 使用： this.$options.filters.dateFormat(date,type)
 */
Vue.filter('dateFormat', (date,type) => {
    date = date ? new Date(date) : new Date();
    type = type || "yyyy-MM-dd";
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    month = month < 10 ? "0" + month : month;
    let day = date.getDate();
    day = day < 10 ? "0" + day : day;
    let dateStr ="";
    if( type.indexOf("yyyy") != -1 ) {
        dateStr += year;
    }
    if( type.indexOf("MM") != -1 ) {
        dateStr += type.indexOf("MM") ? "-" + month : month;
    }
    if( type.indexOf("dd") != -1 ) {
        dateStr += "-" + day;
    }
    return dateStr;
});

/**
 * 根据当前年份和月份，获取对应的天数
 * 使用： this.$options.filters.getDates()
 */
Vue.filter('getDates', (year, month) => {
    return new Date(year, month, 0).getDate();
});

/**
 * 数据为空的填充内容
 * this.$options.filters.emptyTip(value,str);
 * @param value 原始值
 */
Vue.filter('emptyTip', (value,str) => {
    if(!value && value !== 0 ) {
        return str || "-";
    }else {
        return value;
    }
});

/**
 * 接口参数params对象拼接成字符串传为url,如id=1&name=123"
 * this.$options.filters.objToPathStr(value);
 */
Vue.filter('objToPathStr', (value) => {
	let pathStr = [];
	for (let key in value) {
		let item = value[key] === null ? "" : value[key];
		pathStr.push(key + "=" + item);
	}
	return pathStr.join("&");
});
